/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.myproject.ordendigital.dao.hibernate;

import com.myproject.ordendigital.dao.PersonaDao;
import com.myproject.ordendigital.model.Persona;
import com.myproject.ordendigital.model.TipoPersona;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

/**
 *
 * @author Administrador
 */
@Component
public class PersonaDaoHibernate extends HibernateDaoSupport
        implements PersonaDao {

    @Autowired
    public PersonaDaoHibernate(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }

    @Override
    public List<Persona> obtenerListaPersonas(Persona persona) {
        StringBuffer query = new StringBuffer("from Producto p where 1 = 1");


        if (persona.getApePat() != null
                && !persona.getApePat().isEmpty()) {
            query.append(" where upper(descripcion) like '%").append(persona.getApePat().toUpperCase()).append("%'");
        }

        List<Persona> list = getHibernateTemplate().find(query.toString());
        return list;
    }

    @Override
    public Persona obtenerPersonaById(Integer idPersona) {
        Persona persona = getHibernateTemplate().get(Persona.class, idPersona);
        return persona;
    }

    @Override
    public void guardarPersona(Persona persona) {
        getHibernateTemplate().saveOrUpdate(persona);
    }

    @Override
    public void eliminarPersona(Integer idPersona) {
        Persona persona = obtenerPersonaById(idPersona);
        getHibernateTemplate().delete(persona);
    }

    //-------------------------------TipoPersona------------------------------
    @Override
    public List<TipoPersona> obtenerListaTiposPersonas() {
        StringBuffer query = new StringBuffer("from TipoPersona tp ");
        List list = getHibernateTemplate().find(query.toString());
        return list;
    }

    @Override
    public TipoPersona obtenerTipoPersonaById(Integer idTipoPersona) {
        TipoPersona tipoPersona = getHibernateTemplate().get(TipoPersona.class, idTipoPersona);
        return tipoPersona;
    }

    @Override
    public void guardarTipoPersona(TipoPersona tipoPersona) {
        getHibernateTemplate().saveOrUpdate(tipoPersona);
    }

    @Override
    public void eliminarTipoPersona(Integer idTipoPersona) {
        TipoPersona tipoPersona = obtenerTipoPersonaById(idTipoPersona);
        getHibernateTemplate().delete(tipoPersona);
    }
}
